/*
 *
 * index.html 에 현재 이 파일 포함 시켜 놓았습니다.
 * 이곳에 andorid , ios 각각 필요한 펑션을 정의 하고
 * http://121.162.170.243:8787/JustWar/android  <- android
 * http://121.162.170.243:8787/JustWar/ios <- ios
 * 위의 주소로 각각 접근하면 테스트 가능합니다.
 * 파일명은 임시로 common_android.js 정했고, 여기에 클래스별로 정의를 해두면 나중에 필요에따라
 * 잘라서 각자 파일로 만들도록 하겟습니다.
 * 기타 불편한 사항은 전화로도 연락주시면 바로 처리해드릴 수 있도로 하겠습니다.
 *
 */

var common = {
	// Bind Event Listeners
	/*
	 * 애플리케이션의 상태를 관리하기 위한 콜백을 등록합니다. 현재는 네트워크 상태가 offline 으로 변하였을 때 Native
	 * Plugin을 호출하는 것만 구현되어있습니다. 구체적인 처리 방법은 회의를 통해 결정하면 될 것 같습니다.
	 */
	bindEvents : function() {
        console.log('Common : bindEvents');
		document.addEventListener('pause', this.onPause, false);
		document.addEventListener('resume', this.onResume, false);
		document.addEventListener('online', this.onOnline, false);
		document.addEventListener('offline', this.onOffline, false);
        
        return Cordova.exec(null, null, 'BridgePlugin',
                            'deviceready', [ 'ready' ]);
	},
	onPause : function() {
		console.log('Common : onPause');
	},
	onResume : function() {
		console.log('Common : onResume');
	},
	onOnline : function() {
		console.log('Common : onOnline');
		return Cordova.exec(successHandler, errorHandler, 'BridgePlugin',
                            'network', [ 'online' ]);
	},
	onOffline : function() {
		console.log('Common : onOffline');
		return Cordova.exec(successHandler, errorHandler, 'BridgePlugin',
                            'network', [ 'offline' ]);
	},
    /*
     * 화면 전체의 터치 처리를 담당합니다.
     * isTouch : 'able' / 'disable'
     *
     * 화면 전환시 호출하여 터치 입력을 막을 때 활용할 수 있습니다.
     */
	allTouchControl : function(isTouch) {
		return Cordova.exec(successHandler, errorHandler, 'BridgePlugin',
                            'touch', [ isTouch ]);
	},
    /*
     * Index에 따라 버튼의 이미지를 바꿔줍니다.
     * Index의 범위는 현재 게임의 메뉴 인덱스와 동일한 1~6입니다.
     * (News, Mission, War, Unit, Building, General)
     * 웹 상에서 메뉴 전환 시 호출하여 네이티브 버튼의 이미지를 변경할 수 있습니다.
     */
	changeMenuButton : function(btnIndex) {
		return Cordova.exec(successHandler, errorHandler, 'BridgePlugin',
                            'changemenu', [ btnIndex ]);
	},
    /*
     * 로그인 후 결과에 따라 해당하는 로직을 네이티브에서 수행합니다.
     * loginState : 'success' / 'fail'
     */
	loginResult : function(loginState) {
		return Cordova.exec(successHandler,errorHandler,'BridgePlugin','login',[loginState]);
	},
    /*
     * itemID값으로 인앱 결제를 요청합니다.
     * itemID만 넘기면 내부적으로 알아서 처리하므로 리턴 콜백만 잘 처리하면 됩니다.
     */
    startInAppPurchase : function(itemID) {
		return Cordova.exec(successHandler,errorHandler,'BridgePlugin','inapppurchase',[itemID]);
	},
    /*
     * 네이티브에서 전송된 Push메시지를 수신합니다.
     * Push 메시지는 메뉴의 전환에 사용되므로 index를 받아옵니다.
     * 이후 메뉴 전환 함수를 index에 맞게 수행하면 됩니다.
     * index : 1~6
     */
};

function COMMON_Event(e) {
	console.log('Common Event');
	switch (e.event) {
        case 'deviceinfo':
            /*
             * 네이티브에서 생성된 udid와 push 메시지용 token값을 받는 부분입니다.
             * 이 부분에서 로그인 절차를 밟으면 되겠습니다.
             */
            alert(e.token + '\n' + e.udid);
            break;
            
        case 'menubutton':
            /*
             * 네이티브 버튼을 누르면 호출되는 부분입니다. 임의적으로 버튼을 삽입했고, 버튼을 누르면 index 가 넘어오게 됩니다.
             * 이 부분에 메뉴를 바꾸는 코드를 넣어주면 될 것 같습니다.
             */
            alert(e.index);
            common.changeMenuButton(e.index);
            break;
            
            /*
             * 인앱 결제가 끝나면 결과와 결제를 요청한 아이템의 ID를 확인할 수 있습니다.
             */
        case 'inapppsuccess':
            console.log(e.result);
            break;
            
        case 'inappfail':
            console.log(e.code);
            console.log(e.message);
            break;
            
            /*
             * 앱이 Push 메시지를 수신하면 아래 이벤트가 발생하게 되고
             * 어떤 메뉴를 호출했는지 index로 확인할 수 있습니다.
             */
        case 'pushmessage':
            alert(e.index);
            break;
            
        case 'error':
            alert(e.message);
            break;
            
        default:
            break;
	}
}

function successHandler(result) {
	alert("SUCCESS: \r\n" + result);
}

function errorHandler(error) {
	alert("ERROR: \r\n" + error);
}

/*
 * JavaScript -> Native Plugin 호출 방법
 *
 * Cordova.exec(successCallback, failCallback, pluginName, action, message);
 *
 * 호출을 원하는 부분에서 위와 같은 코드를 호출하면 됩니다. Callback 함수를 작성 후 해당 위치에 넣어주시면 됩니다.
 * pluginName은 네이티브 코드에 작성되어있는 플러그인 클래스명을 넣어주면 됩니다. Action은 네이티브에서 1차적으로 분기할 수
 * 있는 Key입니다. message는 Array 형태로 전송되고, 네이티브에서 적절히 처리하면 됩니다.
 */